<?php
/**
 * 学年選択メニューコンポーネントモジュール
 * Smartyコンポーネントクラス拡張セレクト
 */
require_once 'Smarty/Components/Components.php';

/**
 * 学年選択コンポーネントクラス
 * <br /><a href="https://www.evernote.com/view/afc80c9c-d397-42f0-a476-f049fe8975a0?locale=ja#b=90ccea2f-37a9-463f-89cf-099ea98d1d1f&n=afc80c9c-d397-42f0-a476-f049fe8975a0">NOTE</a>
 */
class Components_StartingMember_Gakunen_Select extends Smarty_Components
{
	/** テンプレートファイル名 */
	const TEMPLATE_NAME = 'GakunenSelect.tpl';
	/** オンチェンジイベント起動メソッド名 */
	const ON_CHANGE_METHOD = "changeGakunen('%s', this)";

	/** 初期選択バリュー */
	public $SELECTED;

	/** オンチェンジイベント起動メソッド名 */
	protected $_onChangeMethod;

	/** SELECT NAME */
	protected $_sName;
	/** OPTIONS */
	protected $_aryOptions;
	/** SELECTED */
	protected $_sSelected;
	/** ID */
	protected $_ID;

	/**
	 * コンストラクタ
	 * @param unknown_type $sCompileDir
	 * @param unknown_type $sCompileId
	 * @param unknown_type $sName
	 * @param unknown_type $aryOptions
	 * @param unknown_type $Id
	 */
	public function __construct($sCompileDir, $sCompileId, $sName, $aryOptions, $Id)
	{
		parent::__construct(dirname(__FILE__),$sCompileDir, $sCompileId, $sName, $aryOptions);

		$sOnMethod = sprintf(self::ON_CHANGE_METHOD, Models_Players_Controller::KEY_ID);
		$this->_onChangeMethod = $sOnMethod;
		$this->_ID = $Id;
		$this->_sName = $sName;
		$this->_aryOptions = $aryOptions;
		$this->_setSelectedValue();
	}

	/**
	 * FETCH
	 * (non-PHPdoc)
	 * @see Smarty_Components_Select::fetch()
	 */
	public function fetch()
	{
		$this->view->aa = 'good';
		$this->view->SELECTED = $this->_sSelected;
		$this->view->NAME = $this->_sName;
		$this->view->OPTIONS = $this->_aryOptions;
		$this->view->ID = $this->_ID;
		$this->view->ON_CHANGE = $this->_onChangeMethod;
		$sHtml = parent::fetch(self::TEMPLATE_NAME);
		return $sHtml;
	}

	/**
	 * 選択初期値設定
	 * @param string|array $Values 設定値
	 * <a href="http://yahoo.co.jp">good</a>
	 */
	public function setSelectedValue($Values)
	{
		$value = $Values;
		if ( is_array($Values) ) {
			$value = $Values[0];
		}
		$this->_sSelected = $value;
	}

	/**
	 * HTTPリクエストから選択初期値を取得する
	 * Enter description here ...
	 */
	protected function _setSelectedValue()
	{
		$objRequest = new Lib_Request();
		$value = $objRequest->get($this->_sName);
		$this->setSelectedValue($value);
	}
}